package com.jielihaofeng.netty.bytebuf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;

/**
 * @author Johnnie Wind
 * @description 堆内存和直接内存ByteBuffer
 * @date 2021/11/10 14:19
 */
public class TestHeapAndDirectByteBuf {
    public static void main(String[] args) {
        // 获取基于堆内存的ByteBuf
        ByteBuf heapBuf = ByteBufAllocator.DEFAULT.heapBuffer(10);
        System.out.println(heapBuf.getClass());
        // 获取基于直接内存的ByteBuf
        ByteBuf directBuf = ByteBufAllocator.DEFAULT.directBuffer(10);
        System.out.println(directBuf.getClass());

        // 直接内存创建和销毁代价高，但是读写性能高（少一次内存复制），适合配合池化功能一起使用
        // 直接内存对GC压力小，因为这部分内存不受JVM垃圾回收的管理，但也要注意及时主动释放

        // 池化，主要是对于一些创建比较慢的采用池化的思想进行优化。可以重用ByteBuf对象，采用高效内存分配算法。
        // 怎么开启？默认开启。
    }
}
